package com.chixing.day11_exception;

import java.util.Arrays;

public class MapSum {

    private Entry[] errtryArr;
    private int size;
    public MapSum(){
        this(16);//数组初始值为16
    }
    public MapSum(int initCapacity){
        errtryArr = new Entry[initCapacity];//创建初始数组
    }

    private class Entry{
        String key;
        int value;
        private Entry(String key,int value){
            this.key = key;
            this.value = value;
        }
    }

    /**
     * 插入 key-val 键值对，字符串表示键 key ，整数表示值 val 。
     *  如果键 key 已经存在，那么原来的键值对将被替代成新的键值对
     * @param key
     * @param value
     */
    public void insert(String key,int value){
        if (containerKey(key)){//key 已存在
            Entry entry = get(key);//获得key存在时，数组的值
            entry.value = value;//修改value的值
        }else {//key 不存在
            if (size == errtryArr.length)//扩容
                errtryArr = Arrays.copyOf(errtryArr,errtryArr.length<<1);
            errtryArr[size++] = new Entry(key,value);//把key，value放入数组中
        }
    }

    //判断key是否存在（是否包含）
    private boolean containerKey(String key){
        for (int i=0;i<size;i++){
            if (errtryArr[i].key.equals(key))
                return true;
        }
        return false;
    }

    /**
     * 根据key获得到该键值对对象
     * @param key
     * @return
     */
    private Entry get(String key){
        for (int i = 0;i<size;i++){
            if (errtryArr[i].key.equals(key))
                return errtryArr[i];
        }
        return null;
    }

    //获得容器中已有元素的个数
    public int size(){
        return this.size;
    }

    public void show(){
        for(int i =0;i<size;i++){
            System.out.println(errtryArr[i].key+"-"+errtryArr[i].value);
        }
    }

}
